package com.healthcare.client.service;

import com.github.pagehelper.PageInfo;
import com.healthcare.client.form.ApplyGroupForm;
import com.healthcare.client.pojo.Group;
import com.baomidou.mybatisplus.extension.service.IService;
import com.healthcare.client.pojo.Patient;
import com.healthcare.client.vo.DoctorMonadVo;
import org.apache.poi.ss.formula.functions.T;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 会诊申请 服务类
 * </p>
 *
 * @author 新华医院转诊联盟
 * @since 2020-04-13
 */
public interface GroupService extends IService<Group> {

    /**
     * 添加会诊信息
     * HW
     * @param applyGroupForm 申请会诊的表单对象
     */
    Map<String,Object> addGroupInfo(ApplyGroupForm applyGroupForm);

    /**
     * 取消会诊
     * HW
     * @param groupId 会诊id
     */
    void cancelConsultation(Integer groupId);

    /**
     * 完成会诊
     * HW
     * @param groupId 会诊id
     * @param identity 身份区分0 - 1
     */
    void accomplishGroup(Integer groupId,Integer identity);

    /**
     * 拒绝会诊
     * HW
     * @param groupId 会诊id
     * @param groupRemark 拒绝理由
     */
    void refuseGroup(Integer groupId,String groupRemark);

    /**
     * 撤销操作
     * HW
     * @param groupId 会诊id
     */
    void revocationGroupOperation(Integer groupId);

    /**
     * 撤销分诊
     * HW
     * @param groupId 会诊id
     */
    void revocationTriageGroup(Integer groupId);

    /**
     * 分诊操作
     * HW
     * @param group 分诊信息
     */
    void triageGroup(Group group);



    /**
     * 分页会诊列表数据
     * @param identity 身份区分0 - 1
     * @param page 当前页
     * @param size 分页显示数
     * @param sortType 排序方式：0-默认、1-预约时间、2-患者姓名、3-沟通记录
     * @param patientname 搜索患者姓名
     * @return
     */
    PageInfo getGroupListVo(Integer page, Integer size, Integer identity,Integer sortType,String patientname);

    /**
     *  根据会诊单id,得到会诊单得所有信息
     * @param groupId 会诊单id
     * @return
     */
    List<DoctorMonadVo> getDoctorMonadVoList(Integer groupId);

    /**
     * 通过会诊id获得会诊与患者信息
     * @param groupId
     * @return
     */
    Map<String,Object> getGroupPatientInfo(Integer groupId);
}
